package com.chixing.day18_thread;
/*
    多个线程 修改同一个 Account对象（类）
    thread1:+10
    thread2:+10
    为了防止出现 一个线程在修改数据 尚未提交（结束），其他线程也同时查看或
    修改该对象的数据，导致数据不准确
    ====同步锁
    在同一时刻，最多只有一个线程能够获得到该对象锁
    若其他线程此时也来访问该synchronized 方法，就获得不到该对象的锁

    Account account = new Account("smith",100)
    thread1:account,depoist()
    thread2:account
    【互斥锁】

    depoist() 所有线必须 [依次执行]

    account1.depoist()
    account1.withdraw()

*/
public class Account {
    public synchronized void fun1(){}
    public synchronized static void fun2(){}


    //1.获得到当前对象的锁 2.才能执行depoist() 3.执行结束后，释放对象锁
    public    void depoist(){
        synchronized(this){

        }
    }

    //1.获得到当前对象的锁 2.才能执行withdraw() 3.执行结束后，释放对象锁
    public synchronized   void withdraw(){}
}
